﻿/********************************
 * author: sam.long
 * date: 2017-11-13
 * remark: Javascript的执行功能
 ***************************/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SAM.Framework.Javascript
{
    /// <summary>
    /// JS的执行函数
    /// </summary>
    public interface IExecute
    {
        /// <summary>
        /// 需要执行的Js代码
        /// </summary>
        /// <param name="jsCode">Js代码</param> 
        void ExecuteNonResult(string jsCode);

        /// <summary>
        /// 执行Js代码，根据resultKeys返回值，不存在返回null
        /// </summary>
        /// <param name="jsCode">需要执行的Js代码</param>
        /// <param name="resultKeys">返回值的变量名称列表</param>
        /// <returns></returns>
        ResultInfo Execute(string jsCode, IList<string> resultKeys);

        /// <summary>
        /// 执行Js代码，根据resultKey返回值
        /// </summary>
        /// <param name="jsCode">需要执行的Js代码</param>
        /// <param name="resultKey">返回值的变量名称，默认为result</param>
        /// <returns></returns>
        ResultInfo Execute(string jsCode, string resultKey = "result");
    }
}
